
   Skill             Effect

   Weapons
1     Sword
2     PoleArm
3     Hafted
   Bows
4     Sling
5     Bow
6     Crossbow
   Thrown
7     Weapons
8     Other
   Unarmed
9     Karate (aka Monk combat)
10 Assasinate        x3 damage if successful

11 Digging
   MagicalResistance
12    Acid/Fire/Cold/Poison/Elec
13    Fear/Blind/Conf/Sound
14    Light/Dark/Shard/Nether/Nexus/Chaos
15    Disenchantment/Hold Life/Free Action
16 Stealth
   Perception        (psuedo ids only)
17    Surroundings   (hints about what is on level if successful?)
18    Equipment
19    Magical
20 Searching
21 Trap Disarming
   Magical Devices
22    Rods
23    Staves
24    Wands
25    Activations

26 Health
27 Mystic Power
28 Dodging
   Repair
29    Weapons
30    Armor
31    Equipment
32 Merchant

   Magic Realms
33    General
34    Life
35    Death
36    Nature
37    Trump
38    Chaos
39    Sorcery
40    Chi
41    Elemental
42    Arcane

   Lore              (partial or full info ids)
43    Food  (Mushrooms, Potions)
44    Weapons (Any)
45    Armor (Any)
46    Magic (Rods, Staffs, Wands)
47    Artifact (Any)
      Monster Lore
48       Power
49       Magic
50       Attack

   (49)

typedef struct player_race player_race;

struct player_race
{
   cptr title;       /* Type of race */

   s16b r_adj[A_MAX];      /* Racial stat bonuses */

   u16b r_skills[MAX_SKILLS]; /*  Racial Skills  */

   u16b r_res[MAX_RESISTANCES];  /*  Racial Rsistances  */

   byte r_mhp;       /* Race hit-dice modifier */
   byte r_exp;       /* Race experience factor */

   byte b_age;       /* base age */
   byte m_age;       /* mod age */

   byte m_b_ht;      /* base height (males) */
   byte m_m_ht;      /* mod height (males) */
   byte m_b_wt;      /* base weight (males) */
   byte m_m_wt;      /* mod weight (males) */

   byte f_b_ht;      /* base height (females) */
   byte f_m_ht;      /* mod height (females)	*/
   byte f_b_wt;      /* base weight (females) */
   byte f_m_wt;      /* mod weight (females) */

   byte infra;       /* Infra-vision	range */

   s16b deadly_mod;  /* Deadliness Modifier */
};

typedef struct player_type player_type;

struct player_type
{
   s16b px;                /* Player location */
   s16b py;                /* Player location */

   byte psex;              /* Sex index */
   byte prace;             /* Race index */

   /* NEEDED ?????????? */
   player_magic magical;

   byte hitdie;            /* Hit dice (sides) */
   s16b age;               /* Characters age */

   s16b ht;                /* Height */
   s16b wt;                /* Weight */
   s16b sc;                /* Social Class */
   s16b max_depth;         /* Max depth */
   s16b depth;             /* Cur depth */
   s16b max_lev;           /* Max level */
   s16b lev;               /* Cur level */
   u16b exp_frac;          /* Cur exp frac (times 2^16) */

   s32b max_exp;           /* Max experience */
   s32b exp;               /* Cur experience */

   s32b au;                /* Current Gold */

   s16b town_num;          /* Current town number */

   s16b inside_quest;      /* Inside quest level */

   s32b wilderness_x;      /* Coordinates in the wilderness */
   s32b wilderness_y;

   s16b mhp;               /* Max hit pts */
   s16b chp;               /* Cur hit pts */
   u16b chp_frac;          /* Cur hit frac (times 2^16) */

   s16b msp;               /* Max mana pts */
   s16b csp;               /* Cur mana pts */
   u16b csp_frac;          /* Cur mana frac (times 2^16) */

   s16b stat_max[A_MAX];   /* Current "maximal" stat values */
   s16b stat_cur[A_MAX];   /* Current "natural" stat values */
   s16b stat_tmp[A_MAX];   /*  Current "temp" stat values  */
   s16b stat_tim[A_MAX];   /*  Current "time" till effect ends values  */

   s16b fast;              /* Timed -- Fast */
   s16b fast_val;
   s16b slow;              /* Timed -- Slow */
   s16b slow_val;
   s16b blind;             /* Timed -- Blindness */
   s16b paralyzed;         /* Timed -- Paralysis */
   s16b confused;          /* Timed -- Confusion */
   s16b afraid;            /* Timed -- Fear */
   s16b image;             /* Timed -- Hallucination */
   s16b poisoned;          /* Timed -- Poisoned */
   s16b cut;               /* Timed -- Cut */
   s16b stun;              /* Timed -- Stun */

   s16b protevil;          /* Timed -- Protection */
   s16b invuln;            /* Timed -- Invulnerable */
   s16b hero;              /* Timed -- Heroism */
   s16b shero;             /* Timed -- Super Heroism */
   s16b shield;            /* Timed -- Shield Spell */
   s16b blessed;           /* Timed -- Blessed */
   s16b tim_invis;         /* Timed -- See Invisible */
   s16b tim_invis_val;
   s16b tim_infra;         /* Timed -- Infra Vision */
   s16b tim_infra_val;

   s16b oppose_acid;       /* Timed -- oppose acid */
   s16b opp_acid_val;
   s16b oppose_elec;       /* Timed -- oppose lightning */
   s16b opp_elec_val;
   s16b oppose_fire;       /* Timed -- oppose heat */
   s16b opp_fire_val;
   s16b oppose_cold;       /* Timed -- oppose cold */
   s16b opp_cold_val;
   s16b oppose_pois;       /* Timed -- oppose poison */
   s16b opp_pois_val;
   s16b tim_esp;           /* Timed ESP */
   s16b wraith_form;       /* Timed wraithform */
   s16b resist_magic[MAX_REALMS];      /* Timed Resist Magic (later) */
   s16b res_magic_val[MAX_REALMS];

   u32b muta1;             /* Mutations */
   u32b muta2;             /* Mutations */
   u32b muta3;             /* Mutations */

   s16b virtues[MAX_PLAYER_VIRTUES];
   s16b vir_types[MAX_PLAYER_VIRTUES];

   s16b chaos_patron;      /* Players Chaos Patron */
   s16b word_recall;       /* Word of recall counter */

   s16b energy;            /* Current energy */
   s16b food;              /* Current nutrition */

   s16b player_hp[PY_MAX_LEVEL];   /* HP Array */

   char died_from[80];     /* Cause of death */
   char history[4][60];    /* Initial history */

   byte confusing;         /* Glowing hands */
   byte searching;         /* Currently searching */

   u16b total_winner;      /* Total winner */

   u16b panic_save;        /* Panic save */
   u16b noscore;           /* Cheating flags */

   bool is_dead;           /* Player is dead */
   bool wizard;            /* Player is in wizard mode */
   u16b expfact;           /* Experience factor
                            * Note: was byte, causing overflow for Amberite
                            * characters (such as Amberite Paladins)
                            */

   /*** Temporary fields ***/

   bool playing;           /* True if player is playing */

   bool leaving;           /* True if player is leaving */

   bool create_up_stair;   /* Create up stair on next level */
   bool create_down_stair; /* Create down stair on next level */

   s32b align;             /* Good/evil/neutral */

   s16b detectx;           /* Coords of last detect traps casting */
   s16b detecty;           /* Coords of last detect traps casting */
   bool detected;          /* Have cast detect_traps on this level */
   bool det_pad;           /* Padding byte */

   s16b total_weight;      /* Total weight being carried */

   s16b inven_cnt;         /* Number of items in inventory */
   s16b equip_cnt;         /* Number of items in equipment */

   s16b target_set;        /* Target flag */
   s16b target_who;        /* Target identity */
   s16b target_row;        /* Target location */
   s16b target_col;        /* Target location */

   s16b health_who;        /* Health bar trackee */

   s16b monster_race_idx;  /* Monster race trackee */

   s16b object_kind_idx;   /* Object kind trackee */

   s16b energy_use;        /* Energy use this turn */

   s16b resting;           /* Resting counter */
   s16b running;           /* Running counter */

   s16b run_cur_dir;       /* Direction we are running */
   s16b run_old_dir;       /* Direction we came from */
   bool run_unused;        /* Unused (padding field) */
   bool run_open_area;     /* Looking for an open area */
   bool run_break_right;   /* Looking for a break (right) */
   bool run_break_left;    /* Looking for a break (left) */

   s16b command_cmd;       /* Gives identity of current command */
   s16b command_arg;       /* Gives argument of current command */
   s16b command_rep;       /* Gives repetition of current command */
   s16b command_dir;       /* Gives direction of current command */

   s16b command_see;       /* See "cmd1.c" */
   s16b command_wrk;       /* See "cmd1.c" */

   s16b command_new;       /* Hack -- command chaining XXX XXX */

   s16b new_spells;        /* Number of spells available */

   bool cumber_armor;      /* Mana draining armor */
   bool cumber_glove;      /* Mana draining gloves */
   bool heavy_wield;       /* Heavy weapon */
   bool heavy_shoot;       /* Heavy shooter */
   bool icky_wield;        /* Icky weapon */
   bool pad_byte;          /* Yet more padding */

   s16b cur_lite;          /* Radius of lite (if any) */

   u32b notice;            /* Special Updates (bit flags) */
   u32b update;            /* Pending Updates (bit flags) */
   u32b redraw;            /* Normal Redraws (bit flags) */
   u32b window;            /* Window Redraws (bit flags) */

   s16b stat_use[A_MAX];   /* Current modified stats */
   s16b stat_top[A_MAX];   /* Maximal modified stats */

   /*** Extracted fields ***/

   s16b stat_add[A_MAX];   /* Equipment stat bonuses */
   s16b stat_ind[A_MAX];   /* Indexes into stat tables */

   /*  Resistances Are now % Based  */
   byte resist_acid;       /* Resist acid */
   byte resist_elec;       /* Resist lightning */
   byte resist_fire;       /* Resist fire */
   byte resist_cold;       /* Resist cold */
   byte resist_pois;       /* Resist poison */

   byte resist_fear;       /* Resist fear */
   byte resist_lite;       /* Resist light */
   byte resist_dark;       /* Resist darkness */
   byte resist_blind;      /* Resist blindness */
   byte resist_confu;      /* Resist confusion */
   byte resist_sound;      /* Resist sound */
   byte resist_shard;      /* Resist shards */
   byte resist_nexus;      /* Resist nexus */
   byte resist_nethr;      /* Resist nether */
   byte resist_chaos;      /* Resist chaos */
   byte resist_disen;      /* Resist disenchant */

   /*  Moved these to here  */

   byte free_act;          /* Never paralyzed */
   byte hold_life;         /* Resist life draining */

   /*  Also % based effects  */

   byte reflect;           /* Reflect 'bolt' attacks */
   byte sh_fire;           /* Fiery 'immolation' effect */
   byte sh_elec;           /* Electric 'immolation' effect */

   byte anti_magic;        /* Anti-magic */
   byte anti_tele;         /* Prevent teleportation */

   bool sustain_str;       /* Keep strength */
   bool sustain_int;       /* Keep intelligence */
   bool sustain_wis;       /* Keep wisdom */
   bool sustain_dex;       /* Keep dexterity */
   bool sustain_con;       /* Keep constitution */
   bool sustain_chr;       /* Keep charisma */

   bool slow_digest;       /* Slower digestion */
   bool ffall;             /* No damage falling */
   bool lite;              /* Permanent light */
   bool regenerate;        /* Regenerate hit pts */
   bool telepathy;         /* Telepathy */
   bool see_inv;           /* Can see invisible */

   bool impact;            /* Earthquake blows */
   bool aggravate;         /* Aggravate monsters */
   bool teleport;          /* Random teleporting */
   bool exp_drain;         /* Experience draining */

   bool bless_blade;       /* Blessed blade */
   bool xtra_might;        /* Extra might bow */
   bool pass_wall;         /* Permanent wraithform */

   s16b dis_to_h;          /* Known bonus to hit */
   s16b dis_to_d;          /* Known bonus to dam */
   s16b dis_to_a;          /* Known bonus to ac */

   s16b dis_ac;            /* Known base ac */

   s16b to_h;              /* Bonus to hit */
   s16b to_d;              /* Bonus to dam */
   s16b to_a;              /* Bonus to ac */

   s16b ac;                /* Base ac */

   s16b see_infra;         /* Infravision range */

   u16b skills[MAX_SKILLS];/*  Skills  */
   u16b cskills[MAX_SKILLS];/*  Current Skills  */

   u32b noise;             /* Derived from stealth */

   s16b num_blow;          /* Number of blows */
   s16b num_fire;          /* Number of shots */

   byte ammo_mult;         /* Ammo multiplier */
   byte ammo_tval;         /* Ammo variety */
   byte bow_energy;        /* shooter speed */

   s16b pspeed;            /* Current speed */

   /*** Pet commands ***/

   s16b pet_follow_distance;   /* Length of the imaginary "leash" for pets */
   byte pet_open_doors;    /* flag - allow pets to open doors */
   byte pet_pickup_items;  /* flag - allow pets to pickup items */

   /* Options */
   bool options[OPT_PLAYER];
   bool birth[OPT_BIRTH];

   /* Extra player-specific flags */
   bool skip_more;         /* Skip the --more-- prompt */
   bool mon_fight;         /* Monster fighting indicator */

   u16b max_seen_r_idx;    /* Most powerful monster visible */
   bool monk_armour_stat;  /* Status of monk armour */

   /* Randmon List Seeds */
   u16b BaseSeed;
   u16b TypeSeed;
   u16b UniqueSeed;

   /* Randart Dispersal Counters */
   u16b ArtLites;
   u16b ArtWeapons;
   u16b ArtArmor;
   u16b ArtJewelry;
};

